route.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { NextRequest, NextResponse } from 'next/server';
  2. import { prisma } from '@/lib/prisma';
  3. export async function GET(
  4. request: NextRequest,
  5. { params }: { params: Promise<{ id: string }> }
  6. ) {
  7. try {
  8. const { id } = await params;
  9. const importId = parseInt(id);
  10. if (isNaN(importId)) {
  11. return NextResponse.json(
  12. { error: 'Invalid import ID' },
  13. { status: 400 }
  14. );
  15. }
  16. // Check if import exists
  17. const importRecord = await prisma.import.findUnique({
  18. where: { id: importId }
  19. });
  20. if (!importRecord) {
  21. return NextResponse.json(
  22. { error: 'Import not found' },
  23. { status: 404 }
  24. );
  25. }
  26. // Get basic summary data
  27. const totalRecords = await prisma.cintasInstallCalendar.count({
  28. where: { importId }
  29. });
  30. const cintasSummaries = await prisma.cintasSummary.findMany({
  31. where: { importId },
  32. orderBy: { week: 'asc' }
  33. });
  34. // Get file info
  35. const file = importRecord.fileId ? await prisma.file.findUnique({
  36. where: { id: importRecord.fileId }
  37. }) : null;
  38. const summary = {
  39. totalRecords,
  40. totalWeeks: cintasSummaries.length,
  41. cintasSummaries: cintasSummaries.map(summary => ({
  42. week: summary.week,
  43. trrTotal: summary.trrTotal,
  44. fourWkAverages: summary.fourWkAverages,
  45. trrPlus4Wk: summary.trrPlus4Wk,
  46. powerAdds: summary.powerAdds
  47. }))
  48. };
  49. return NextResponse.json({
  50. importId,
  51. fileName: file?.filename || 'Unknown',
  52. uploadDate: importRecord.createdAt,
  53. summary
  54. });
  55. } catch (error) {
  56. console.error('Error fetching import summary:', error);
  57. return NextResponse.json(
  58. { error: 'Failed to fetch import summary' },
  59. { status: 500 }
  60. );
  61. }
  62. }